1 PCAL
        Pcal generates PostScript  to  produce  landscape  or portrait
    calendars for any month  and  year.  The arguments month,year, and
    nmonths, if provided, should be  numeric.   The month value should
    be in the range 1 -  12, and the year value should be specified as
    1  or 2 digits or as the  full  4  digit  year.    If  no  numeric
    arguments  are  provided, the calendar for the current  month  and
    year will be generated.

        If one  numeric argument is provided, it is interpreted as the
    year value, and  calendars  for the entire year will be generated.
    Otherwise, nmonths months, starting  with  month and year, will be
    generated.

        For whole-year calendars (i.e.  the  -w  option is given), the
    command line arguments are interpreted somewhat differently.    By
    default, all months in the current year are printed, starting with
    January.  If the month argument alone is given,  it is expected to
    be the desired year to print, and prints all of  the months in the
    given year.  If both month and year are given, then 12 consecutive
    months  are printed starting at the given month and year.  If  the
    month,  year, and nmonths  arguments  are  all  present,  printing
    begins  with the given month  and  year  and  nmonths  months  are
    printed, rounded up to the nearest multiple of 12.

        VMS Version
        Execution format:

            pcal [options] [mm yy] [n]

2 Parameters
  mm yy n
        "mm" and "yy"  are numeric values of the month (1-12) and year
    (0-99) (i.e., July 1990  would  be 7 90).  If you just include the
    "yy" option, an entire 12  months  of calendars will be generated.
    A specific month can be produced  by including the "mm" parameter.
    The  "n"  parameter will  produce the "n"  consecutive  months  of
    calendars starting with the requested month.

        The following flags may  be  specified (in increasing order of
    precedence) in global symbol PCAL_OPTS, in "opt" lines in the date
    file (all but -c, -e, -f,  -h,  -u,  -v,  -"D",  -"U"),  or on the
    command line.  Any flag which normally  takes  an  argument may be
    specified  without  the argument;  this resets its  value  to  the
    program  default.    (-"D" alone thus clears all defined  symbols;
    -"U" alone has no effect.)

        The "-" flag has  been added to  disambiguate  cases  where an
    argument-less flag has been specified immediately before a numeric
    parameter:

        pcal -t - 9 90

2 Options
        Pcal  accepts  several  command  line  options  (or  from  the
    CALENDAR.DAT file).  The uppercase options  should  be enclosed in
    quotes as pcal is case-sensitive and the  VMS  command line parser
    will  convert  the  string to upper case otherwise.    The  quoted
    strings  are  not  needed if the options are included  within  the
    CALENDAR.DAT file.

3 -e
        Print an  empty  calendar (i.e., do not  print entries  from a
    CALENDAR.DAT file.)

3 -f <FILE>
        Directs pcal to use the file name <FILE> as  the input file in
    place  of  the  default  CALENDAR.DAT file.  Note that the  search
    rules are  different  when  -f  is used.  If <FILE> is an absolute
    file name, then  pcal attempts to open only that file.  Otherwise,
    pcal looks for <FILE>  in  the  current  directory,  then  in  the
    directory  indicated  by  the environment  variable  PCAL_DIR  (if
    defined), and finally in the directory  where  the pcal executable
    resides.  If the given <FILE> file is not found, an error results.

3 -o <FILE>
        Directs  pcal to  write  the  PostScript  calendar  into  FILE
    (default: CALENDAR.PS in the current directory.)

3 -l
        This will cause the  output to  come  out  in  landscape  mode
    (This is the default).  This also resets the x- and y-axis scaling
    and translation factors to the defaults for landscape mode.

3 -p
        This will cause the  output  to  come  out  in  portrait  mode
    instead of landscape mode.   This  also  resets  the x- and y-axis
    scaling and translation factors to the defaults for portrait mode.

3 -j
        Directs pcal to print  the  Julian  (Day Of Year, DOY) in each
    calendar box.

3 -"J"
        Directs pcal to print the Julian  (Day  Of  Year, DOY) and the
    number of days remaining in the year in each calendar box.

3 -m
        This option causes a  moon to be printed on days corresponding
    to a full, half, or new moon (default: no moons).

3 -"M"
        This option causes a fractional moon to be printed on all days
    (default:  no moons).

3 -g day1[-day2] | all | holiday
        Causes  all  dates falling on weekday day1  (through  day2  if
    specified)  to be printed in gray;  -g  all  causes  all  weekdays
    (other than holidays) to be printed in gray;   -g  holiday  causes
    all holidays to be printed in gray.  day1 and day2 may wrap around
    weekends;   for example, -g fri-sun causes Fridays, Saturdays, and
    Sundays to be printed in gray.

3 -"O"
        Causes "gray" dates to be printed as outlined characters.

3 -"G" day1[-day2] | all | holiday
        Similar to -g,  but  the  selected  days  will  be  printed as
    outlined characters filled with gray.

        Note:    The  default  for  the  above  options  is  to  print
    Saturdays,  Sundays, and holidays in gray and all  other  days  in
    black.  For backward compatibility with earlier versions of  pcal,
    -"O"  and  -"G" alone change all non-black days to the  specified
    color.

3 -b day1[-day2] | all | holiday
        Similar to - you guessed it - -g, but the selected  days  will
    be printed in black.  Since black is the default for weekdays,  -b
    is primarily  used  to  overriding  other  flags  (e.g., -g all -b
    sat-sun ).

3 -s <date_shade>[/fill_shade]
        Overrides the default values for date and/or fill box shading.
    These values must be in the range 0.0 (black) through 1.0 (white);
    they may be set independently of  each  other.  The default values
    are 0.8 for dates and 0.9 for empty boxes.

         Note:  For use with color printers, date_shade and fill_shade
    may  optionally  be specified as a set of  red:green:blue  values;
    red, blue, and green must in the range 0.0  through 1.0.  At least
    one ':' must be present for this option to be recognized;  omitted
    values are set to 0.0.


3 -"F" <DAY>
        Selects weekday DAY as the first  day  of the week.  The given
    day will appear in the left-most column of the calendar.

3 -"A"
        Directs pcal to use American date conventions "mm/dd[/yy]" and
    "month dd" when parsing the date file (default).

3 -"E"
        Directs pcal to use European date conventions "dd/mm[/yy]" and
    "dd month" when parsing the date file.

3 -"X" xtrans
        Specifies  the  x-axis  translation  value for positioning the
    output on the page.

3 -"Y" ytrans
        Specifies  the  y-axis  translation  value for positioning the
    output on the page.

3 -x xscale
        Specifies the x-axis scaling factor for the calendar size.

3 -y yscale
        Specifies the y-axis scaling factor for the calendar size.

3 -t <title_font>[/size]
        Specifies  the name of a font to use to print all the calendar
    heading text:  the month name and year at the top of the calendar,
    the weekday  names, the notes  box heading, and the  foot strings.
    The user may optionally  specify the font  size for the month/year
    heading  (single-month  calendar  only);   for  example,  pcal  -t
    Times-Roman/54  sets  the font  to Times-Roman  and the month/year
    point size to 54.  The font size may also be changed independently:
    pcal -t /54 changes the point size to 54 without affecting the font
    name.

3 -d <date_font>[/size]
        Similar  to  the  -t  option, but selects the font and/or size
    used to print the dates.

3 -n <text_font>[/size]
        Similar  to the -t and -d options, but selects the font and/or
    size  used  to  print the text associated with each day and in the
    "Notes" blocks.

3 -r <mapping>
        Specifies an 8-bit character set  remapping  for  printing the
    diacritical marks common to European languages;    mapping  may be
    "Roman8"  (ROMAN-8 extended character set), "Latin1" (ISO  LATIN-1
    extended character set), or "none" (builtin 8-bit mappings  only).
    It may be abbreviated to a single character if desired.

3 -"D" <SYMBOL>
        Defines the named SYMBOL prior to reading the date file.

3 -"U" <SYMBOL>
        Un-Defines the named SYMBOL prior to reading the date file.

3 -"L" <STRING>
        Causes   the  accompanying  string  to  be  printed    as    a
    left-justified  footer.    Format  specifiers  denoting  the month
    and/or year may appear in the string;  the appropriate values will
    be substituted upon printing.

3 -"C" <STRING>
        Similar to -"L", but  causes  the  accompanying  string  to be
    printed as a centered footer.

3 -"R" <STRING>
        Similar to -"L", but  causes  the  accompanying  string  to be
    printed as a right-justified footer.

3 -"N" <STRING>
        Caused the accompanying string to  be  printed  as the heading
    for the "Notes" box.  Note  however, that pcal makes no attempt to
    ensure that it fits.

3 -"B"
        Causes pcal to leave  unused  calendar boxes blank (default is
    gray).

3 -# n
        Causes pcal to print n copies (maximum:  100)  of  each output
    page.


3 -"S"
        Causes pcal to suppress printing the small calendars.  See the
    CAVEATS section for further details.

3 -k
        Causes  pcal to print the small calendars in  the  upper  left
    corner (the default is to print them at the lower right).

3 -"K"
        Causes pcal to print the small calendar for the previous month
    in  the upper left corner and the next month in  the  lower  right
    (the default is to print both at the lower right).

3 -w
        Causes pcal  to print a calendar for 12 consecutive months:  3
    rows / 4 columns in landscape mode, 4 rows / 3 columns in portrait
    mode.  See the CAVEATS section for details  on  the  use  of  this
    option with other options.

3 -c
        Causes pcal to generate a date file suitable for use as  input
    to the Un*x  "calendar(1)"  utility.  The normal PostScript output
    is suppressed.

3 -z <time_zone>
        Forces pcal to  ignore  the  moon file and to use its internal
    algorithm for moon phase  calculations,  adjusting  the  phase  by
    time_zone hours (where time_zone is  expressed  in  hours  west of
    UTC).

3 -"I"
        Resets all parameters to the program defaults.

3 -h
        Causes  pcal to write  version  information,  parameter  usage
    message, and full explanation of  options  and  file  formats  (to
    stdout) and terminate.

3 -u
        Causes pcal to write version information  and  parameter usage
    message (to stdout) and terminate.

3 -v
        This prints version information only.

2 Date_File
        By default,  pcal  simply  prints an empty calendar.  Its real
    power is in  its  ability to place "events" in appropriate days on
    the  calendar,  thus allowing  the  user  to  create  personalized
    calendars.  This is achieved through the use of the "date file".

        The  date  file  is  named  CALENDAR.DAT.   Pcal will look  in
    several  places  for  such  a  file.    First,  if the environment
    variable  PCAL_DIR    is  defined,  pcal  searches  the  directory
    indicated by that  variable.   Next, pcal searches the user's home
    directory (as specified by  the  HOME  environment  variable).  If
    neither PCAL_DIR nor HOME is  defined,  pcal  searches the current
    directory  instead.    Finally,  the  directory   where  the  pcal
    executable resides will be checked.  If  no date file is found, an
    empty calendar is printed;  no error is generated.
     
        If  a  date file is found, it will be searched for lines  with
    leading dates matching  the  requested  month  and year.  Any text
    following the dates found  will  be  printed on the calendar under
    the appropriate day of the  month.  Dates in the CALENDAR.DAT file
    may be expressed in any of several formats:

          <ordinal> <day_spec> in <month_spec>[*] [<text>]
          [<ordinal>] <day_spec> <prep> <date_spec>[*] [<text>]
          <date_spec>[*] [<text>]
          <holiday>

    Where:

      <month_name> := first 3+ characters of name of month, or "all"
      <month_spec>  := <month_name>, or "year"
      <day_spec>    := first 3+ characters of name of weekday, "day",
                       "weekday", "workday", "holiday",
                       "nonweekday", "nonworkday", "nonholiday", "new_moon",
                       "first_quarter", "full_moon", or "last_quarter"
      <ordinal>     := any ordinal number "first", "1st", ... "fifth", "5th",
                       "last", "odd", "even", or "all"
      <prep>        := "before", "preceding", "after", "following",
                       "on_or_before" ("oob"), or
                       "on_or_after" ("ooa")
      <holiday>     := "Christmas", "Thanksgiving", etc.
      <sep>         := 1 or more non-numeric, non-space, non-"*" characters
      <month>       := day of month (1-31)
      <day>         := a numeric month (1-12)
      <year>        := a numeric year

     If the -"A" option (American date formats, the default) is given:

      <date_spec>   := <month_name><day> | <month><sep><day>[<sep><year>]

     If the -"E" option (European date formats) is given:

      <date_spec>   := <day><month_name> | <day><sep><month>[<sep><year>]

3 Text_Format_Description
        Pcal also allows format specifiers  in  both the text and foot
    strings (see the -L, -C, -R, and -N options  below);  each will be
    replaced by a corresponding string as outlined in the table below.
    Most  of  these  are  derived from the ANSI C strftime() function;
    the %[louwMD] and %[o0+\-] format specifiers are specific to pcal:

                %a     abbreviated weekday
                %A     full weekday
                %b     abbreviated month name
                %B     full month name
                %d     day of month (1-31)
                %j     day of year (1-366)
                %l     days left in year (0-365)
                %m     month (1-12)
                %U     week number (0-53)
                %W     week number (0-53)
                %u     week number (1-54)
                %w     week number (1-54)
                %y     year w/o century (00-99)
                %Y     year w/century
                %%     % character

                %o     print number as ordinal
                %0     print number with leading zeroes
                %+     use following month or year
                %-     use previous month or year
                %{+N}[DWMY]     adjust date by +N days/weeks/months/years
                %{\-N}[DWMY]    adjust date by \-N days/weeks/months/years

        %u  specifier  considers the week containing 1/1 as week 1 and
    the following  logical  Sunday  (the  first  day  of  the  week as
    printed;  cf.    the \-F option below) as the start of week 2;  %U
    considers the first logical Sunday as the first day of week 1.  %w
    and %W behave like %u  and  %U  respectively,  but  use  the first
    logical Monday instead.  Note that  %w  has a different meaning to
    strftime().

        The %o format specifier prints a  number  as  an ordinal, with
    the  appropriate  suffix ("st", "nd", "rd", or  "th"  in  English)
    appended;  for example, %od prints the day  of the month as "1st",
    "2nd", "3rd", etc.

        Unlike  strftime(), pcal defaults to printing numbers  (except
    %y ) without leading zeroes.  If leading  zeroes  are desired, the
    `0' prefix may be used.  For example, %0j  prints the first day of
    year as "001".

        The %+ and %\- format specifiers direct pcal to substitute the
    following/previous month/year in the  following [bBmyY] specifier.
    For example, %+B prints the name of the next month.

        The %{[+\-]N}[DWMY] format specifiers do  not  print anything,
    but instead adjust the working date  by \(+- N days ( D ), weeks (
    W ), months ( M ), or  years  ( Y ).  Subsequent format specifiers
    use the adjusted date instead of the current  date.   For example,
    %+1M %B %Y adjusts the date forward by one  month  and then prints
    the  resulting  month and year ("January 1992" in December, 1991);
    %\-2W %b %d adjusts the date backward by two weeks and  prints the
    resulting month and day ("Jul 26" on August 9).

        Such date adjustments are  normally  cumulative;  for example,
    %+1Y%\-1D adjusts the date forward  by  one year and then backward
    by one day.  If %D  or  %M  is  specified alone (or if N is zero),
    pcal restores the original date.  Note  that  %M  has  a different
    meaning to the strftime() function.

        The "Notes" box (see below) uses the first  of  the  current
    month as the default date.  All foot strings  use the first of the
    current  month in single-month mode and the first of the  starting
    month in whole-year mode.

3 Date_Syntax_Description
        Any  non-numeric  character    may   separate  numeric  dates.
    Holidays may be flagged by following the date immediately with "*"
    as in the examples above;   this will cause the date to be printed
    in gray.  "Each" and "every"  are  accepted as synonyms for "all",
    and any word may be used in  place  of  "in".    The abbreviations
    "oob"  and  "ooa"  may  be  used  in  place    of    the  keywords
    "on_or_before"  and  "on_or_after",  respectively.       "Nearest"
    attempts to match the specified date;  if that fails, it tries the
    day after, then the day before,  then  two  days  after,  two days
    before, and so forth until a match occurs.

        Wildcard day names are also provided.   The  keyword "weekday"
    applies to any days which are normally printed  in  black  on  the
    calendar.  The keyword "workday" is the same, but does not include
    any  holidays.    The  keyword  "holiday" includes only those days
    flagged as holidays.  The keywords "nonweekday", "nonworkday", and
    "nonholiday" are also  recognized  as negations of the above.  See
    the Caveats below for  important  notes  on  using these keywords.
    Moon phases may also appear  as  wildcards;  "nm" is accepted as a
    synonym for "new_moon", "1q" and "fq"  for  "first_quarter", "fm"'
    for    "full_moon",  "3q"  for  "third_quarter",  and  "lq"    for
    "last_quarter".

        Ordinal  day  numbers  may  be used to specify  dates,  either
    relative to the month or to the year.   Either  words  or  numeric
    abbreviations  may  be  used  for "first" through "fifth";  higher
    numbers must  be given using the numeric equivalent (e.g.  100th).
    Negative ordinal numbers  may  even  be used.  For example, "-2nd"
    means "next to last".

        "Odd" and "even" do  not  refer  to the actual date;  instead,
    "odd" means "alternate, starting with the first", and "even" means
    "alternate,  starting with the second".   Thus,  "odd  Fridays  in
    March" refers to the first, third, and  (if present) fifth Fridays
    in March - not to those Fridays falling on odd dates.

        "All" refers to each individual month;  "year"  refers  to the
    year as an entity.  Thus "odd Fridays in all" refers to the first,
    third, and fifth Friday of each month, while "odd Fridays in year"
    refers  to  the  first  Friday  of  January and every other Friday
    thereafter.

        Text in the date file may use C-like escape sequences (i.e.  a
    "\" followed by a character, 1--3 octal digits, or "x" followed by
    1--2 hexadecimal  digits).  Escaped whitespace (including newline)
    and the standard  ANSI  character escapes ("\a", "\b", "\f", "\n",
    "\r", "\t", "\v") are all replaced by a single blank.

        Lines in the CALENDAR.DAT  file consisting of year #### (where
    #### is a numeric year)  can be used to set the year for following
    entries.  This assumes that the following entries do not contain a
    year;  any date entries containing year  information  will set the
    remembered year to that year.

        Lines in the CALENDAR.DAT file consisting of opt <options> can
    be  used  to  override  the defaults for any command-line  options
    except -e, -f, -h, -"D", and -"U".  Any options  specified in this
    manner  are,  in turn, overridden by those specified explicitly on
    the command  line.  Note that the upper case letter options do NOT
    need to be  enclosed in quotes if they are put in the CALENDAR.DAT
    file.  Enclose the upper case letters in quotes only when they are
    used on the DCL.

        Lines in the CALENDAR.DAT file  consisting of note [/<number>]
    <month> can be used to place  notes  regarding the entire month is
    one of the unused blocks of the  calendar.   The <month> indicator
    may be either a number 1 through 12 or an alphabetic month name as
    described above;  "note all" will place the associated text in the
    notes block for each month in the current year.   <number>  is  an
    optional positive  or  negative  number  specifying  the empty box
    where the associated  text  is  to  be  placed.  If positive, pcal
    counts forward from the first empty box;  if negative, pcal counts
    backward from the last empty  box.    Thus,  "note/1"  places  the
    associated  text  in  the  first empty  box;    "note/-3"  in  the
    third-to-last.  The default is -1 if  no  <number>  is given (last
    empty box, immediately preceding the small calendars on the bottom
    row;  cf.  \-S , \-k , and \-K , below).

        Comments   are  supported  in  the  CALENDAR.DAT  file.    Any
    characters following  a  "#" character through the end of the line
    are ignored (unless the `#' character is escaped by `\').

        Pcal supports rudimentary  cpp-like  functionality in the date
    file,  allowing  the  following   constructs:    define  |  undef,
    if{{n}def} ...  elif ...    *  else ...  endif, and include.  Note
    that these are not preceded by "#" as they are in C.  Symbol names
    defined  using  these  keywords  (or  via  the  -"D"  option)  are
    case-insensitive.    It  is  not an error to  undef  an  undefined
    symbol, nor to define a previously-defined one.  An ifdef alone is
    always false;  an ifndef alone is always true.   if is accepted as
    an synonym for ifdef.

        The  name  of the file in the include directive may optionally
    be surrounded by either "" or <>, both of which are ignored.    If
    the  name  is not an absolute path, it is taken to be relative  to
    the directory where the file containing the directive is located.

        pcal normally terminates  immediately if the file specified in
    an include directive does  not  exist.    An alternate form of the
    directive, include?, directs pcal to continue silently if the file
    does not exist or cannot be opened.

        In  addition  to  pre-processing keywords, pcal  also  accepts
    boolean  expressions in if{{n}}def} and elif directives.     These
    expressions  consist   of  symbol  names  joined  by  the  boolean
    operators !, &,  ^,  and  |,  in order of precedence, high to low.
    Parentheses may be used  to alter the precedence.  The synonyms &&
    and || are accepted for  & and |.  A symbol name evaluates to true
    if currently defined, false if not;  thus:

                              ifdef A | B | C

    ... is true if any of the symbols A, B, and C is defined, and:

                              ifdef A & B & C

    ...is true if they all are.  Note that ifndef <expr> is equivalent
    to ifdef !( <expr> ).

3 Example
    Date File Example:

    # A sample "opt" line to change the fonts and output file names,
    # to print only Sundays in gray, and to print moons on all days:
    #
    opt -d Helvetica-Bold -t Helvetica-Bold -o myfile.ps -b all -g sun -M

    year 1994               # set year explicitly
    1/1*                    New Year's Day
    ifndef Arizona
        3rd Mon in Jan*     Martin Luther King's Birthday
    endif
    2/2                     Groundhog Day
    Feb 14                  Valentine's Day
    3rd Monday in Feb*      Presidents' Day
    3/17                    St. Patrick's Day
    last Monday in May*     Memorial Day
    7/4*                    Independence Day
    1st Monday in Sep*      Labor Day
    second Monday in Oct*   Columbus Day (observed)
    first workday in all    %-B progress report due
    all Fridays in Oct      Status Meeting, 11 AM
    all Fri in all          Time card due, 3 PM
    all Monday in all       Fiscal week %0W
    -2nd workday in all     Schedule for %+B due %+2D
    2nd full_moon in all    Blue Moon
    Fri on_or_before all 15 Pay Day
    even Fridays in year    Pay Day
    183rd day of year       Mid-year (%l days left)
    10/12                   Columbus Day (traditional)
    10/31                   Halloween
    Tue after first Mon in Nov      Election Day
    11/11*                          Veterans' Day
    fourth Thu in Nov*              Thanksgiving
    Fri after 4th Thu in Nov*       Day after Thanksgiving
    day after fourth Thu in Nov*
    12/25/94*               Christmas     # American
    12/24*                  Christmas Eve
    12/25*                  Christmas
    25.12.94*               Christmas     # European
    25. 12.*                Christmas     # European
    25 Dec*                 Christmas     # European
    25. Dec*                Christmas     # European

    workday nearest 12/25*  Holiday
    last day in Dec*        New Year's Eve
    last workday in all     Status reports due
    note Dec                Office closed throughout week of Christmas
    1/1/95*                 New Year's Day      # set new year implicitly

2 Moon_File
        If a file of the name MOON##.DAT (where  ##  is  the  last two
    digits of the calendar year) exists in the same  directory  as the
    date file (or in the directory where pcal resides) pcal  uses  the
    information  contained  within to calculate the phase of the moon.
    If no such file exists, pcal uses an extremely reliable algorithm.
    This is the preferred method of use.

        Entries in the moon file must conform to the following syntax:

        If the -"A" option  (American  date  formats,  the default) is
    given:

              <quarter> <month><sep><day> [<hour><sep><min>]

        If the -"E" option (European date formats) is given:

              <quarter> <day><sep><month> [<hour><sep><min>]

        Where:

            <quarter>   := "nm", "fq" or "1q", "fm", "3q" or "lq"
                           (new moon,first quarter,full moon,last quarter)
            <hour>      := number 0-23 (24-hour clock)
            <min>       := number 0-59

        This file must contain entries for  all  quarter  moons in the
    year, in chronological order;  if any errors are encountered, pcal
    will revert to using its default algorithm.

        As in the date file, comments start with  "#"  and run through
    end-of-line.

        The moon file may optionally contain an opt -A  or opt -E line
    to specify the format of its own date entries independently of the
    format  used in the date file.  No other flags are  legal  in  the
    moon file.

3 Example
        The  following  is  a short example of an European style (-"E)
    moon data  file.    It  is taken from the MOON91.DAT file supplied
    with pcal.

        3q 01/07 13:37          # third quarter
        nm 01/15 18:51          # new moon
        1q 01/23 09:23          # first quarter
        fm 01/30 01:10          # full moon

2 Logical_Names
        Pcal optionally uses two (2)  logical  names during execution.
    A user may define them or let the administrator set them up.

3 Pcal_Dir
        Pcal logical name for the location  of the directory for input
    and output files.  In this way,  a  user can over-ride the current
    default  location for the source  of  the  CALENDAR.DAT input file
    and the CALENDAR.PS output file.

3 Pcal_Opts
        Pcal  also  looks for a logical name "Pcal_Opts;  if  defined,
    its contents  are  parsed  as command-line flags.  These over-ride
    the program defaults,  but  are  over-ridden  by any specified via
    "opt" lines in the date file or on the command line.  Example:

        Define Pcal_Opts "-n Helvetica -D meetings"     ! login.com
        pcal -"U" meetings 9 90       ! un-define symbol at runtime

2 Caveats
        The "workday" and "holiday" keywords are aware  of  only those
    holidays which have already been flagged at the  point  where they
    appear.  For example, consider January 1990:

                        January 1990
                     S  M Tu  W Th  F  S
                        1  2  3  4  5  6
                     7  8  9 10 11 12 13
                    14 15 16 17 18 19 20
                    21 22 23 24 25 26 27
                    28 29 30 31

        If the CALENDAR.DAT file looked like this:

            workday on_or_before all 15         payday
            3rd Mon in Jan*                     MLK day

    then Pcal would mark the 15th as "payday" since  at  that point in
    the CALENDAR.DAT file it has no way of knowing that  January  15th
    will  later  be  flagged  as  a  holiday.  If the two  lines  were
    reversed, such that  the  holiday preceded the "workday" wildcard,
    then Pcal would work  as  intended,  marking  instead  the 12th as
    "payday".    Also, beware of  year  boundaries  which  affect  the
    handling of all of the day  wildcard  keywords.  In general, it is
    best to place monthly wildcards such as  the  example above at the
    end of each year to achieve the desired effect.

        Only the positive  ordinals  may  be  used in conjunction with
    prepositions (e.g., "fourth Sunday  before  12/25").  (It could be
    argued that "last Sunday before  12/25"  should  be  accepted as a
    synonym for "first Sunday before 12/25",  but then what does "last
    Sunday after 12/25" mean?)

        When the -w and -p options are used together, pcal revises the
    y-scale   factor  in  order  to  use  the  entire  portrait  page;
    therefore, the user should avoid using use  the  -y using both the
    -w and -p options.  Use of the  -w  option in any case effectively
    disables the -m, -"M", -j, and -"J" options.

        The output of the -c option may be used as input to subsequent
    runs  of  pcal.    Note,  however,  that  opt lines (except for an
    automatic "opt  \-[A|E]" ), comments, "note" text, and ifdef'd-out
    source will be lost.

        The  -S  option interacts with note[/<number>];  if  used,  it
    should  be specified either on the command line or  prior  to  the
    first note line in the date file.

2 Authors
        The  original  PostScript code to generate the  calendars  was
    written  by Patrick Wood (Copyright (c) 1987 by  Patrick  Wood  of
    Pipeline  Associates, Inc.), and authorized for modifica- tion and
    redistribution.   The  calendar file inclusion code was originally
    written in bs(1)  by  Bill  Vogel  of  AT&T.    Patrick's original
    PostScript was modified and enhanced several times by others whose
    names have regrettably  been  lost.    Ken Keirnan of Pacific Bell
    assembled the original "C"  version  upon  which  this  is  based;
    additional modifications and enhancements are  the  work of Joseph
    P.  Larson, Ed Hand, Andrew  W.    Rogers,  Mark  Kantrowitz,  Joe
    Brownlee, Jamie Zawinski, Richard L.  Dyson,  Bill  Hogsett, Floyd
    Miller, Andy Fyfe, and Geoff Kuenning.

2 Version
        This help file  currently  reflects pcal v4.5 dated 6-OCT-1994
    and was updated by Richard Dyson.
